package com.triones.api.service.third;

import com.triones.api.entity.CardLinkBodyBO;
import com.triones.api.entity.LptBeneficiaryRequestBodyBO;
import com.triones.api.entity.WithdrawCryptoRequstBodyBO;
import com.triones.api.entity.bo.*;
import com.triones.api.entity.param.BalanceRequestParams;
import com.triones.api.entity.param.CardBinParams;
import com.triones.api.entity.param.TotalBalanceRequestParams;

import java.util.List;
import java.util.Map;

/**
 * lpt 接口（调用第三方）
 */
public interface LeptageService {

    /**
     * 创建CardLink钱包
     * @return
     */
    Map wallet(CardLinkBodyBO bo);

    /**
     * 查询钱包余额
     * @return
     */
    List<Map> balance (BalanceRequestParams params, String accountId);

    /**
     * 创建提币地址
     * @param bo
     * @return
     */
    Map withdraw(WithdrawRequestBodyBO bo);

    /**
     * 子钱包提币
     * @param bo
     * @return
     */
    Map crypto(CryptoRequestBodyBO bo, String accountId);

    /**
     * 测试
     * @param cryptoWalletRequestBodyBO
     * @return
     */
    boolean mockDepositCrypto(CryptoWalletRequestBodyBO cryptoWalletRequestBodyBO);

    /**
     * 查询钱包余额
     * @param accountId
     * @return
     */
    List<Map> mockBalance(BalanceRequestParams params,String accountId);

    /**
     * 删除提币地址
     * @param beneId
     * @return
     */
    boolean delAddress(String beneId);

    /**
     * 模拟提币交易结果
     * @param bo
     * @return
     */
    Boolean mockWithdrawCrypto(WithdrawCryptoRequstBodyBO bo);

    /**
     * 划转
     * @param bodyBO
     * @return
     */
    Map transfer(TransferRequestBodyBO bodyBO,String accountId,String direction);

    /**
     * lpt询价
     * @param bo
     * @return
     */
    Map lptQuote(LptQuoteRequestBodyBO bo);

    /**
     * 查询总账户钱包余额
     * @param params
     * @return
     */
    List<Map> totalBalance(TotalBalanceRequestParams params);

    /**
     * lpt换汇
     * @param bo
     * @return
     */
    Map lptExchange(LptExchangeRequestBodyBO bo);

    /**
     * lpt提现
     * @param bo
     * @return
     */
    Map lptWithdraw(LptWithdrawRequestBodyBO bo);

    /**
     * 查询收款人
     * @return
     */
    List<Map> lptBeneficiary(LptBeneficiaryRequestBodyBO bo);
}
